<?php
/**
 * @author		João Batista Neto
 * @brief		Classes e interfaces relacionadas com o protocolo HTTP
 * @package		rpo.http
 */

require_once 'rpo/base/IObject.php';

/**
 * @brief		Conexão HTTP
 * @details		Interface para definição de um conector HTTP para envio de requisições.
 * @interface	HTTPConnection
 */
interface HTTPConnection extends IObject {
	/**
	 * @brief		Fecha a conexão
	 * @return		HTTPConnection
	 */
	public function close();

	/**
	 * @brief		Abre uma nova conexão HTTP
	 * @return		HTTPConnection
	 */
	public function open();

	/**
	 * @brief		Requisição HTTP
	 * @details		Envia uma requisição HTTP contendo uma lista de cabeçalhos e, opcionalmente
	 * um corpo.
	 * @param		$request HTTPRequest Requisição que será enviada ao servidor
	 * @return		HTTPResponse
	 */
	public function request( HTTPRequest $request );
}